package cn.edu.njust.alg.leetcode;

import cn.edu.njust.alg.ArrayUtils;

public class Leetcode_88_merge_sorted_array {

	/*
	 * Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1
	 * as one sorted array.
	 * 
	 * Note: You may assume that nums1 has enough space (size that is greater or
	 * equal to m + n) to hold additional elements from nums2. The number of
	 * elements initialized in nums1 and nums2 are m and n respectively.
	 */
	public void merge(int[] nums1, int m, int[] nums2, int n) {
		int [] tn = new int[m+n];
		int i = 0;
		int j = 0;
		int k = 0;
		while(i<=m-1 && j<=n-1){
			if(nums1[i]>nums2[j]){
				tn[k++]=nums1[i++];
			}else{
				tn[k++]=nums2[j++];
			}
		}
		while(i<=m-1){
			tn[k++]=nums1[i++];
		}
		while(j<=n-1){
			tn[k++]=nums2[j++];
		}
		System.arraycopy(tn, 0, nums1, 0, tn.length);
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] nums1 = {56,34,17,0,0,0};
		int[] nums2 = {68,12,0};
		new Leetcode_88_merge_sorted_array().merge(nums1, 3, nums2, 2);
		ArrayUtils.printArray(nums1);
	}

}
